#include<iostream>
#include<algorithm>
#include<cstring>

using namespace std;
const int N = 510, INF = 0x3f3f3f3f;

int n, m;
int g[N][N], dist[N];
bool st[N];

int prime(){
    memset(dist, 0x3f, sizeof dist);
    int res = 0;
    for(int i = 0; i < n; i ++){
        int t = -1;
        for(int j = 1; j <= n; j ++){
            if(!st[j] && (t == -1 || dist[j] < dist[t])){
                t = j;
            }
        }

        if(i && dist[t] == INF) return INF;
        if(i) res += dist[t];
        for(int j = 1; j <= n; j ++){
            dist[j] = min(dist[j], g[t][j]);
        }

        
        st[t] = true;
    }

    return res;
}


int main(){
    freopen("in.txt", "r", stdin);
    freopen("out.txt", "w", stdout);
    scanf("%d%d", &n, &m);
    
    memset(g, 0x3f, sizeof g);

    for(int i = 0; i < m; i ++){
        int a, b, c;
        scanf("%d%d%d", &a, &b, &c);
        g[a][b] = g[b][a] = min(g[a][b], c);
    }

    int t = prime();
    if(t == INF){
        printf("impossible\n");
    }else{
        printf("%d\n", t);
    }
    
}